from django.db import models
from django.contrib.auth.models import User


# Create your models here.
class Topic(models.Model):                                      # 这个类继承Django中模型基本功能的类
    """用户学习的主题"""
    text = models.CharField(max_length=200)                     # 字符域，设定一个最大长度
    date_added = models.DateTimeField(auto_now_add=True)        # 记录日期和时间数据，此处是自动设置为当前时间

    owner = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.text


class Entry(models.Model):
    """用户对学习主题的条目描述"""
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    # foreignkey（外键）是数据库术语，它指向数据库中的另一条记录，这里是将
    # 每个条目都关联到特定的主题，创建每个主题时都分配了一个键ID。
    # on_delete=models.CASCADE是级联删除的意思。
    # 就是删除主题时，会顺带删除所有的条目

    text = models.TextField()                                   # 这种字段的长度不受限制
    date_added = models.DateTimeField(auto_now_add=True)

    # 在Entry类中嵌套Meta类。Meta存储用于管理模型的额外信息，让Django在需要时使用Entries来表示多个条目，若无此类，则会使用Entrys这种错误的复数
    class Meta:
        verbose_name_plural = "Entries"

    def __str__(self):
        return f"{self.text[:50]}"                              # 该方法告诉Django，若内容太长则，展示前50个字
